package homework;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;

import javax.swing.JOptionPane;

public class WorkDemo {
	public static int sumDigits(long n) {
		String mString=String.valueOf(n);
		int num=0;
		char [] m=mString.toCharArray();
		for(int i=0;i<m.length;i++) {
			String aString=String.valueOf(m[i]);
			int b=Integer.parseInt(aString);
			num+=b;
		}
		return num;
	}
	/** Converts from feet(英尺) to meters(米) meter=0.305 * foot*/
	public static double footToMeter(double foot) {
		double meter;
		meter=0.305 * foot;
		return meter;
	}

	/** Converts from meters to feet */
	public static double meterToFoot(double meter) {
		double foot;
		foot=meter/0.305;
		return foot;
	}
	/*输出ch1-ch2之间所有字符*/
	public static void printChars(char ch1, char ch2, int numberPerLine) {		
		if(ch2<ch1) {
			char tmp;
			tmp=ch2;
			ch2=ch1;
			ch1=tmp;
		}
		int count=0;
		for(int i=ch1;i<=ch2;i++) {		
			if(count%numberPerLine==0) {
					count=0;
					System.out.println();
			}
			count++;
			System.out.print((char)i+" ");												
			
		}
	}
	public static void printMatrix(int n) {
		for(int i=1;i<=n;i++) {
			for(int j=0;j<n;j++) {
				System.out.print(1+" ");
			}
			System.out.println();
		}
	}
	public static int minIndex(int[] list) {
		int min=list[0];
		for(int m:list) {
			System.out.print(m+" ");
			if(m<min) {
				min=m;
			}
		}
		return min;
	}
	public static int[][] addMatrix(int[][] m1, int[][] m2){
		int m[][]=new int[m1.length][m1.length];
		for(int i=0;i<m1.length;i++) {
			for(int j=0;j<m1.length;j++) {
				m[i][j]=m1[i][j]+m2[i][j];
			}
		}
		return m;
	}
	public static int countLetters(String s) {
		char[]m=s.toCharArray();
		int count=0;
		for(char n:m) {
			if((int)n>=65&&(int)n<=122)
				count++;
		}
		return count;
	}
	public static int parseBinary(String binaryString) {
		int m=Integer.parseInt(Integer.valueOf(binaryString,2).toString());
		return m;
	}
	public static String convertDecimalToBinary(int value) {
		return Integer.toBinaryString(value);
	}
	@SuppressWarnings("resource")
	public static void main(String[] args) {
		//实验一_WelcometToJava-------------------------------------------
//		JOptionPane.showMessageDialog(null, "Welcome to Java!",
//			      "Display Message", JOptionPane.INFORMATION_MESSAGE);
		//实验二_1 Cylinder ----------------------------------------------
//		double area,volume;
//		String aString=JOptionPane.showInputDialog("请输入圆柱的半径：");
//		Double radius=Double.parseDouble(aString);
//		String bString=JOptionPane.showInputDialog("请输入圆柱的高：");	
//		Double length=Double.parseDouble(bString);
//		area=radius * radius * Math.PI;
//		volume = area * length;
//		JOptionPane.showMessageDialog(null, "圆柱体的体积为："+volume);
		//实验二_2 Char-----------------------------------------------
//		String aString=JOptionPane.showInputDialog("请输入一个整数");
//		int InputNum=Integer.parseInt(aString);		//String转换为int
//		if(InputNum>=0&&InputNum<=127) {
//			char b=(char)InputNum;				//int强制转换为char字符
//			JOptionPane.showMessageDialog(null, "其字符为："+b);
//		}
//		else {
//		JOptionPane.showMessageDialog(null, "您输入的数字越界");
//		}
		//实验二_3 Change-----------------------------------------------
//		char b='B';								//大小写字母转换
//		int a;
//		System.out.println("原字符："+b);
//		a=(int)b+32;							//大小写字母ascii差32
//		char m=(char)a;
//		System.out.println(m);
		//实验二_4 Num-----------------------------------------------
//		String aString=JOptionPane.showInputDialog("请输入-0-999内一个整数");
////		Scanner in=new Scanner(System.in);
////		String aString=in.nextLine();
//		int num=0;
//		for(int i=0;i<aString.length();i++) {				
//			String s=String.valueOf(aString.charAt(i));
//			int a=Integer.parseInt(s);
//			num+=a;
//		}
//		System.out.println("各位之和："+num);
		//实验三_1 ThreeNumSort--------------------------------------------------
		/*1	写程序分别从输入对话框中读入三个整数，然后按照由小到大的顺序将其输出。*/
//		String a=JOptionPane.showInputDialog(null, "请输入第一个整数：","输入数据",JOptionPane.QUESTION_MESSAGE);
//		String b=JOptionPane.showInputDialog(null, "请输入第二个整数：","输入数据",JOptionPane.QUESTION_MESSAGE);
//		String c=JOptionPane.showInputDialog(null, "请输入第三个整数：","输入数据",JOptionPane.QUESTION_MESSAGE);
//		int a1=Integer.parseInt(a);
//		int b1=Integer.parseInt(b);
//		int c1=Integer.parseInt(c);
//		if(b1>a1) {
//			int tmp;
//			tmp=a1;
//			a1=b1;
//			b1=tmp;
//		}
//		if(c1>a1) {
//			int tmp;
//			tmp=a1;
//			a1=c1;
//			c1=tmp;
//		}
//		if(c1>b1) {
//			int tmp;
//			tmp=b1;
//			b1=c1;
//			c1=tmp;
//		}
//		JOptionPane.showMessageDialog(null, "从大到小排序："+a1+" "+b1+" "+c1, "排序", JOptionPane.QUESTION_MESSAGE);
		//实验三_2 ZhengChu -------------------------------------------------------
		/*2	写程序从输入对话框中读入一个整数，然后输出该整数被5和6整除的情况。例如当输入分别是10，30和23时，其相应输出应为：
			10 is divisible by 5 or 6, but not both
			30 is divisible by both 5 and 6
			23 is not divisible by either 5 or 6
		 */
//		String a = JOptionPane.showInputDialog(null, "请输入一个整数：", "判断能否被5、6整除", JOptionPane.QUESTION_MESSAGE);
//		int num = Integer.parseInt(a);
//		if(num%5==0&&num%6==0) {
//			JOptionPane.showMessageDialog(null, num+ " is divisible by both 5 and 6", "结果", JOptionPane.QUESTION_MESSAGE);
//		}
//		else if(num%5==0||num%6==0) {
//			JOptionPane.showMessageDialog(null, num+ " is divisible by both 5 and 6,but not both", "结果", JOptionPane.QUESTION_MESSAGE);
//		}
//		else {
//			JOptionPane.showMessageDialog(null, num+ " is not divisible by both 5 and 6", "结果", JOptionPane.QUESTION_MESSAGE);
//		}
		//实验三_3 ZhengChu1 --------------------------------------------------------
		/*3	写程序输出100与1000之间能被5和6同时整除的所有整数，须以每行十个的格式输出。*/
//		int count=0;
//		for(int i=100;i<1000;i++) {		
//			if(i%5==0&&i%6==0) {
//				count++;
//				System.out.print(i+" ");
//				if(count%10==0) {
//					count=0;
//					System.out.println();
//				}												
//			}
//		}
		//实验三_4 XunHuan --------------------------------------------------------
		/*4	使用嵌套循环输出以下内容：
		1 2 3 4 5 6
		1 2 3 4 5
		1 2 3 4 
		1 2 3
		1 2
		1
		*/
//		for(int i=6;i>0;i--) {
//			for(int j=1;j<=i;j++) {
//				System.out.print(j+" ");
//			}
//			System.out.println();
//		}
		//实验三_5 QiuHe--------------------------------------------------------
		/*5	写程序计算以下表达式的和：
		1/3 + 3/5 + 5/7 + 7/9 + … +97/99
		 */
//		float num=0.0f;
//		for(int i=1;i<=100;i++) {
//			if(i%2!=0) {
//				num+=(float)i/(i+2);
//			}
//		}
//		System.out.println("和为："+num);
		//实验四_1 NumHe --------------------------------------------------------
		/*写一个方法，使其计算一个整数中的各个数字的和(整数12345各个数字1，2，3，4，5的和为15)。使用以下的方法头部：
		public static int sumDigits(long n)
		 */
//		Scanner in=new Scanner(System.in);
//		System.out.println("输入一个整数：");
//		long num=in.nextInt();
//		System.out.println("整数的各位之和："+WorkDemo.sumDigits(num));
		//实验四_2 FeetAndMeter --------------------------------------------------------
		/*2	写一个类实现英尺与米的转换*/
//		System.out.println("Feet\t\tMeters\t|\tMeters\t\tFeet");
//		System.out.println("-------------------------------------------------------");
//		for(double i=0;i<10;i++) {
//			System.out.println((i+1d)+"\t\t"+WorkDemo.footToMeter(i+1d)+"\t|\t"+(20d+i*5)+"\t\t"+WorkDemo.meterToFoot(20d+i*5));
//		}
		//实验四_3 PrintChar --------------------------------------------------------
		/*写一个方法，使用以下的方法头部：
		public static void printChars(char ch1, char ch2, int numberPerLine)
		要求该方法以每行numberPerLine个字符的方式输出ch1和ch2之间的所有字符。
		 */
//		System.out.println("输入两个字符：");
//		Scanner in=new Scanner(System.in);
//		String a=in.nextLine();
//		String b=in.nextLine();
//		WorkDemo.printChars(a.charAt(0), b.charAt(0),10);
		//实验四_4 Matrix --------------------------------------------------------
		/*4	写一个方法，使其输出一个所有元素为1的n行n列矩阵。使用以下的方法头部：
		public static void printMatrix(int n)
		 */
//		System.out.println("输入矩阵长度：");
//		Scanner in=new Scanner(System.in);
//		int m=in.nextInt();
//		WorkDemo.printMatrix(m);
		//实验五_1 CheckNum --------------------------------------------------------
		/*1	写程序读入十个整数，然后输出这些整数，如果某整数出现多次，那么只输出一次。
		 * 例如读入了1，2，2，3，3，2，2，1，1，3 十个整数，其输出结果应为1，2，3 。*/
//		int []m =new int[10];
//		int size=0;
//		Scanner in=new Scanner(System.in);
//		for(int i=0;i<10;i++) {
//			boolean isInArray=false;
//			System.out.println("请输入第"+(1+i)+"个数：");			
//			int n=in.nextInt();
//			for(int j=0;j<size;j++) {			
//				if(n==m[j]) {
//					isInArray=true;
//					break;
//				}
//			}
//			if(!isInArray) {
//				m[size]=n;
//				size++;
//				
//			}
//		}
//		for(int i=0;i<size;i++) {
//			System.out.println(m[i]+" ");							
//		}
		//实验五_2 RandomNum --------------------------------------------------
		/*
		 * 2	写程序产生一百个在0和9之间的随机整数，然后统计并输出每个整数出现的次数。*/
//		Random random=new Random();
//		Map<Integer, Integer> map=new HashMap<Integer, Integer>();
//		for(int i=0;i<100;i++) {
//			int m=random.nextInt(10);
//			boolean flag=false;
//			for(int key:map.keySet()) {
//				if(key==m) {
//					map.put(m, map.get(m)+1);
//					flag=true;
//					break;
//				}
//			}
//			if(!flag)
//				map.put(m, 1);
//		}
//		for(int key:map.keySet()) {
//			System.out.println("Count for "+key+" is "+map.get(key));
//		}
		//实验五_3 MinNum---------------------------------------------------
		/*
		 * 3	写方法返回一个整数数组中最小值的位置*/
//		c
//		System.out.println("最小的数为："+WorkDemo.minIndex(m));   
		//实验五_4 DuiSum---------------------------------------------------
		/*
		 * 4	写程序计算一个二维数组中位于由左至右对角线上的所有元素的和。*/
//		int [][]m={{1,1,1,1,1},{2,2,2,2,2},{3,3,3,3,3},{4,4,4,4,4},{5,5,5,5,5}};
//		int num=0;
//		for(int i=0;i<5;i++) {
//			for(int j=0;j<5;j++) {
//				if(i==j)
//					num+=m[i][j];
//			}
//		}
//		System.out.println("对角线之和为："+num);
		//实验五_5 ArraySum---------------------------------------------------
		/*
		 * 5	写方法实现二个二维数组的加法运算。
			public static int[][] addMatrix(int[][] m1, int[][] m2)
		 */
//		int [][]m1= {{1,2,3,4,5},{4,2,2,8,9},{7,3,2,3,4},{3,4,1,4,6},{7,5,2,5,6}};
//		int [][]m2= {{1,2,1,2,1},{2,3,2,2,3},{7,3,3,4,3},{4,5,4,6,4},{7,5,5,2,1}};
//		int [][]m=WorkDemo.addMatrix(m1, m2);
//		for(int i=0;i<m1.length;i++) {
//			for(int j=0;j<m1.length;j++) {
//				System.out.print(m1[i][j]+" ");
//			}
//			if(i==2)
//				System.out.print("  +");
//			System.out.print("\t");
//			for(int j=0;j<m2.length;j++) {
//				System.out.print(m2[i][j]+" ");
//			}
//			if(i==2)
//				System.out.print("  =");
//			System.out.print("\t");
//			for(int j=0;j<m.length;j++) {
//				System.out.print(m[i][j]+" ");
//			}
//			System.out.println();
//		}
		//-----------------------------------------------------
//		System.out.println("输入一个字符串：");
//		Scanner in=new Scanner(System.in);
//		String mString=in.nextLine();
//		System.out.println(mString+"中有"+WorkDemo.countLetters(mString)+"个字母");
		//-----------------------------------------------------
//		System.out.println("输入一个二进制数：");
//		Scanner in=new Scanner(System.in);
//		String mString=in.nextLine();
//		System.out.println(mString+"十进制表示为："+WorkDemo.parseBinary(mString));
		//-----------------------------------------------------
//		System.out.println("输入一个十进制数：");
//		Scanner in=new Scanner(System.in);
//		int m=in.nextInt();
//		System.out.println(m+"二进制表示为："+WorkDemo.convertDecimalToBinary(m));
		//-----------------------------------------------------
		int num=0;
		for(String i:args) {
			num+=Integer.valueOf(i);
		}
		System.out.println("参数和为："+num);
	}
}
